<?php

class Admin_UserController extends Zend_Controller_Action
{	
    private $_params;
	private $_auth;	
    public function init(){
        $this->_params      = $this->_request->getParams();        
        $this->_auth         = new My_Auth();
        $this->view->auth    = $this->_auth;        
        $this->_auth        = $this->_auth->checkAuthentication();
        $this->view->auth   = $this->_auth;
    }
    public function indexAction(){
        $modelUser              = new Admin_Model_User();
        $userList               = $modelUser->getAllData()->toArray();
        $this->view->userList   = $userList;        
    }
    public function addAction()
    {   
        $form = new Admin_Form_User();
        $form->removeElement('fullname');
        $form->removeElement('address');
        $form->removeElement('mobile');
        $form->removeElement('gold');
        $form->removeElement('qty');        
        $form->submit->setLabel('Thêm mới');
        $this->view->form = $form;        
        if($this->getRequest()->isPost()){
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {                
                $addData['username']    = $form->getValue('username');                
                $addData['email']       = $form->getValue('email');
                $addData['password']    = $form->getValue('password');                
                $addData['status']      = $form->getValue('status');                                                
                if(strlen($addData['password']) < 6){                    
                    $this->view->mess = "Mật khẩu tối thiểu 6 ký tự !";
                    $this->view->flag = "alert";
                }else{                    
                    $modelUser = new Admin_Model_User();                
                    $userCheck = $modelUser->getDataCheckUnique(array('username'=>$addData['username'],
                        'email'=>$addData['email'])
                    );                                    
                    if(!$userCheck){                         
                        $addId = $modelUser->addData($addData['username'],$addData['email'],$addData['password'],$addData['status']);
                        if($addId){
                            $this->_helper->redirector('index', 'user', 'admin');
                        }else{
                            $this->view->mess = "Đã có lỗi xảy ra. Vui lòng thử lại!";
                            $this->view->flag = "error";
                       }
                    }else{                                                
                        if($addData['email'] == $userCheck['email']){
                            $this->view->mess = "Email $addData[email] đã đăng ký tại hệ thống. Vui lòng dùng địa chỉ Email khác!";
                            $this->view->flag = "error";                                
                        }elseif($addData['username'] == $userCheck['username']){
                            $this->view->mess = "Tên đăng nhập: $addData[username] đã tồn tại. Vui lòng chọn tên khác!";
                            $this->view->flag = "error";    
                        }                                        
                    } 
                }                               				
            }else{
                $form->populate($formData);
            }
        }                                       
    }
    public function editAction(){        
        $userId = (int)($this->_getParam('id', 0));        
        $modelUser = new Admin_Model_User();        
        $userCheck = $modelUser->getDataById($userId)->toArray();
        $this->view->userCheck = $userCheck;        
        $form = new Admin_Form_User();
        $form->submit->setLabel('Lưu thay đổi');                   
        $this->view->form = $form;                                                    
        if($userCheck){            
            if($this->getRequest()->isPost()){                
                $formData = $this->getRequest()->getPost();                                                                                                                                                              
                if($form->isValid($formData)){   
                    
                    $editData['id']    = $form->getValue('id');
                    $editData['username']    = $form->getValue('username');
                    $editData['email']    = $form->getValue('email');
                    $editData['mobile']    = $form->getValue('mobile');
                    $editData['password']      = $form->getValue('password');
                    $editData['fullname']      = $form->getValue('fullname');                    
                    $editData['address']      = $form->getValue('address');                                                   
                    $editData['status']      = $form->getValue('status');
                    $editData['gold']      = $form->getValue('gold');                        
                    $editData['qty']      = $form->getValue('qty');
                      
                    $userCheckEmail = $modelUser->getDataByEmail($editData['email']);
                    $userCheckMobile = $modelUser->getDataByMobile($editData['mobile']);
                    $userCheckUsername = $modelUser->getDataByUsername($editData['username']);                                        
                    $check = 1;
                                        
                    if($userCheckEmail && $userCheckEmail['id'] != $editData['id']){
                        $this->view->mess = "Email $editData[email] đã đăng ký tại hệ thống. Vui lòng dùng địa chỉ Email khác!";
                        $this->view->flag = "error";
                        $check = 0;
                    }                                                                                
                    if($userCheckMobile && $userCheckMobile ['id'] != $editData['id']){
                        $this->view->mess = "Số điện thoại $editData[mobile] đã đăng ký tại hệ thống. Vui lòng dùng số điện thoại khác!";
                        $this->view->flag = "error";
                        $check = 0;
                    }                    
                    if($userCheckUsername && $userCheckUsername['id'] != $editData['id']){
                        $this->view->mess = "Tên đăng nhập: $editData[username] đã tồn tại. Vui lòng chọn tên khác!";
                        $this->view->flag = "error";
                        $check = 0;
                    }      
                                  
                    if($check){                      
                        if($editData['password']){
    				        if(strlen($editData['password']) < 6){
    				            $this->view->mess = "Mật khẩu tối thiểu 6 ký tự !";
                                $this->view->flag = "alert";
                                $check = 0;
                            }
        				}                                                                                               
                        if($check){                                 
                            if($editData['password']){
                                $modelUser->updatePass($editData['id'], $editData['password']);
                            }
                            $modelUser->updateData($editData['id'],$editData);
                            $this->_helper->redirector('index', 'user', 'admin');                                                                                                                
                        }else{                            
                            $form->populate($formData); 
                        }                                                
                    }else{
                        
                        $form->populate($formData);
                    }                                                                                                                                                                                                                                 				
                }else{                         
                    $form->populate($formData);
                }
            }else{                  
                $form->populate($userCheck);                
            }
        }else{
            $this->_helper->redirector('index', 'user', 'admin');
        }
    }
    public function deleteAction(){
        if($this->getRequest()->isPost()){
            $del = $this->getRequest()->getPost('del');
            if($del == 'Có'){                       
                $userId = $this->getRequest()->getPost('id');                
                $modelUser = new Admin_Model_User();                                                                                                
                $modelUser->deleteData($userId);                
                // ghi log
            }
            $this->_helper->redirector('index', 'user', 'admin');
        }else{
            $id = $this->_getParam('id', 0);
            $modelUser = new Admin_Model_User();                        
            $this->view->userCheck = $modelUser->getDataById($id)->toArray();            
        }
    }               
}